//
import { reqCartList, reqDeleteCartById, reqUpdateCheckedById } from "@/api";
const state = {
    cartList: []
};
const mutations = {
    GETCARTLIST(state,cartList){
        state.cartList = cartList
    }
};
const actions = {
    //获取购物车列表数据
    async getCartList({commit}){
        let result = await reqCartList()
        //测试是否能获取个人的购物车数据
        // console.log('rr1', result);
        if(result.code==200){
            commit("GETCARTLIST", result.data)
        }
    },
    //删除购物车某一个产品
    async deleteCartListBySkuId({commit}, skuId){
        let result = await reqDeleteCartById(skuId)
        if(result.code==200){
            return "ok"
        }else{
            return Promise.reject(new Error('fail'))
        }
    },
    //修改购物车某一个产品 的选中状态
    async updateCheckedById({commit}, {skuId,isChecked}){
        let result = await reqUpdateCheckedById(skuId,isChecked)
        if(result.code==200){
            return "ok"
        }else {
            return Promise.reject(new Error('fail'))
        }
    },
    //删除全部勾选的产品
    deleteAllCheckedCart({dispatch, getters}){
        //在删除全部的里面，多次调用删除一个的接口方法
        // Promise.all(this.deleteCartListBySkuId())
        // console.log('context', context);
        // context ：小仓库，commit【提交mutations修改state】 getters【计算属性】，dispatch【派发action】, state【当前仓库的数据】
        //获取购物车中全部的产品，是一个数组
        let PromiseAll = []
        getters.cartList.catInfoList.forEach(item => {
           let promise = item.isChecked==1? dispatch('deleteCartListBySkuId',item.skuId) : '';
            // 将每一次返回的promise添加进数组中
            PromiseAll.push(promise)
        });
        //只要p1|p2...都成功。返回的结果即为成功
        return Promise.all(PromiseAll)
    },
    //修改全部产品的选中状态
    updateAllCartIsChecked({dispatch,state},isChecked){
        // console.log(state, isChecked);
        //数组
        let promiseAll = []
        state.cartList[0].cartInfoList.forEach(item=>{
            // return item.isChecked==0?dispatch('')
            let promise =  dispatch('updateCheckedById',{skuId:item.skuId,isChecked})
            promiseAll.push(promise)
        })
        // 最终返回的结果
        return Promise.all(promiseAll)
    }
};
const getters = {
    cartList(state){
        return state.cartList[0]||{}
    }
};
export default {
    state,
    mutations,
    actions,
    getters
}
